#include <cstdio>

int n, a[ 601 ][ 601 ], f[ 601 ][ 601 ][ 2 ];

void init( )
{
    int i, j;
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < n; j++ )
        {
            f[ i ][ j ][ 0 ] = f[ i ][ j ][ 1 ] = 0;
            scanf("%d", &a[ i ][ j ]);
        }
    f[ 0 ][ 0 ][ 0 ] = a[ 0 ][ 0 ] + a[ 1 ][ 0 ];
}

void work( )
{
    int i, j, k, p = 0;
    for ( k = 1; k <= 2 * n - 3; k++ )
    {
        p ^= 1;
        for ( i = 0; i < n && i <= k; i++ )
        {
            if ( k - i >= n )
                continue;
            for ( j = 0; j <= i && j <= k; j++ )
            {
                if ( k + 1 - j >= n )
                    continue;
                f[ i ][ j ][ p ] = f[ i - 1 ][ j - 1 ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ];
                if ( f[ i ][ j ][ p ] < f[ i ][ j - 1 ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ] )
                    f[ i ][ j ][ p ] = f[ i ][ j - 1 ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ];
                if ( i != j )
                {
                    if ( f[ i ][ j ][ p ] < f[ i - 1 ][ j ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ] )
                        f[ i ][ j ][ p ] = f[ i - 1 ][ j ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ];
                    if ( f[ i ][ j ][ p ] < f[ i ][ j ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ] )
                        f[ i ][ j ][ p ] = f[ i ][ j ][ p ^ 1 ] + a[ k - i ][ i ] + a[ k + 1 - j ][ j ];
                }
            }
        }
    }
    printf("%d\n", f[ n - 1 ][ n - 1 ][ p ]);
}

int main( )
{
    while ( scanf("%d", &n) != EOF )
    {
        init( );
        work( );
    }
    return 0;
}
